package org.dei.test.llqruntime;

import java.util.*;
import org.dei.perla.sys.llqruntime.*;
import org.dei.perla.sys.llqruntime.datastructures.*;

/**
 * Rappresenta una singola LLQ nel contesto dell'esecuzione di basso livello
 * @author diego
 *
 */
public class LLQEnvironment {

	/**
	 * I DataCollectors impiegati per recuperare i dati dal sistema pervasivo
	 */
	private ArrayList<DataCollector> pDataCollector = new ArrayList<DataCollector>();
	
	/**
	 * Il local buffer in comune fra i DataCollectors
	 */
	private Buffer pBuffer;
	
	/**
	 * Le informazioni generali sulla LLQ (tempistiche, condizioni, etc)
	 */
	private LLQInformations pQueryInfo;
	
	/**
	 * Costruttore
	 * @param parDCsArray la serie di DataCollectors
	 * @param parQI Le informazioni generali (tempistiche, condizioni, etc)
	 * @param parBuffer il buffer in comune ai DataCollector
	 */
	public LLQEnvironment(ArrayList<DataCollector> parDCsArray, LLQInformations parQI, Buffer parBuffer) {
		
		this.pBuffer = parBuffer;
		this.pDataCollector.addAll(parDCsArray);
		this.pQueryInfo = parQI;
	}
	
	/**
	 * @return L'elenco dei DataCollector attualmente attivi
	 */
	public Iterator<DataCollector> getDataCollectors() {
		
		return this.pDataCollector.iterator();
	}
	
	/**
	 * @return Il local buffer su cui opera la LLQ
	 */
	public Buffer getLLQLocalBuffer() {
		
		return this.pBuffer;
	}
	
	/**
	 * Le informazioni di esecuzione
	 * @return
	 */
	public LLQInformations getExecutionInformations() {
		
		return this.pQueryInfo;
	}
		
}
